"""
整体的对于pydantc可以进行测试，这个也是一个非常强大的对于数据进行验证与处理的工具
"""
from pydantic import BaseModel as TestModel,Field
from typing import Optional,Literal


class User(TestModel):
    id: int
    name: str
    age: int

    # 是否可选 

    test: Optional[str] = None

    # 如何要求是必选   
    # test2: str = Field(...,min_length=2,max_length=10)

    #  进一步让只能在 男 女 之间选择
    sex: Literal["男","女"] = "男"
     


# 采用上面的这种方式定义的好处是什么，会有一系列的方法可以直接被使用
# 多个类型如何合并的问题

user = User(id=1,name="张三",age=20, sex="男")


user.id = 2


print(user)


#  关于类型的必选可以采用很多的方式 这里更加的

# 这里我想尝试下数据copy相关的内容 
user_copy = user.model_copy()

user.id=3

print(user)
print(user_copy)



data_json = user.model_dump()
print(data_json)

data_json_str = user.model_dump_json()


print(data_json_str)






